package com.zhike.mapper;

import java.util.ArrayList;
import java.util.List;

import com.zhike.model.ClockRecord;
import com.zhike.model.Department;
import com.zhike.model.NewMessage;
import com.zhike.model.Users;

import cn.jpush.api.report.UsersResult.User;

public interface UserMapper {
	/**
	 * 登陆
	 * @param users
	 * @return
	 */
	Users login(Users users);

	/**
	 * 人员列表
	 * @param i 
	 * @return
	 */
	List<Users> membersList(int i);
	/**
	 * 查询部门列表
	 * @return
	 */
	List<Department> departmentList();
	/**
	 * 考勤打卡
	 * @param clockRecord
	 */
	void clock(ClockRecord clockRecord);
	/**
	 * 查询今天打卡记录
	 * @param clockRecord
	 * @return
	 */
	ClockRecord clockSelect(ClockRecord clockRecord);
	/**
	 * 上班打卡次数
	 * @param clockRecord
	 * @return
	 */
	ClockRecord countBusinessClock(ClockRecord clockRecord);
	/**
	 * 下班打卡次数
	 * @param clockRecord
	 * @return
	 */
	ClockRecord countClosingClock(ClockRecord clockRecord);
	/**
	 * 查询上下班时间
	 * @param clockRecord
	 * @return
	 */
	ArrayList<ClockRecord> workOutTime(ClockRecord clockRecord);
	/**
	 * 打卡列表
	 * @param clockRecord
	 * @return
	 */
	List<ClockRecord> selectClockList(ClockRecord clockRecord);
	/*8
	 * 几个人上班迟到
	 */
	Integer countLate(ClockRecord clockRecord);
	/**
	 * 几个人下班早退
	 * @param clockRecord
	 * @return
	 */
	Integer countLeaveEarly(ClockRecord clockRecord);
	/**
	 * 公司总人数
	 * @return
	 */
	Integer countUser();
	/**
	 * 上班打卡人数
	 * @param clockRecord
	 * @return
	 */
	Integer countWorkIn(ClockRecord clockRecord);
	/**
	 * 下班打卡人数
	 * @param clockRecord
	 * @return
	 */
	Integer countWorkOut(ClockRecord clockRecord);
	/**
	 * 今天几个人打过卡
	 * @param clockRecord
	 * @return
	 */
	Integer countClock(ClockRecord clockRecord);
	/**
	 * 查询所有人的uid
	 * @param clockRecord 
	 * @return
	 */
	List<Users> uidAll(ClockRecord clockRecord);
	/**
	 * 早退次数
	 * @param clockRecord
	 * @return
	 */
	Integer selectLeaveEarlyCount(ClockRecord clockRecord);
	/**
	 * 迟到次数
	 * @param clockRecord
	 * @return
	 */
	Integer selectLateCount(ClockRecord clockRecord);
	/*8
	 * 多少次上班打卡
	 */
	Integer selectWorkInClock(ClockRecord clockRecord);
	/**
	 * 多少次下班打卡
	 * @param clockRecord
	 * @return
	 */
	Integer selectWorkOutClock(ClockRecord clockRecord);
	/*
	 * 查询当天打了几次卡
	 */
	Integer selectCountAbsenteeism(ClockRecord clockRecord);
	/**
	 * 签到明细
	 * @param clockRecord
	 * @return
	 */
	List<ClockRecord> signInDetail(ClockRecord clockRecord);
	/**
	 * 人员列表和职称
	 * @return
	 */
	List<Users> selectUserTitle();
	/**
	 * 今天你迟到了吗
	 * @param newCr
	 * @return
	 */
	ClockRecord getStates1(ClockRecord newCr);
	/**
	 * 今天打上班卡了吗
	 * @param clockRecord
	 * @return
	 */
	Integer isWorkIn(ClockRecord clockRecord);
	/**
	 * 个人这个月的打卡日期记录
	 * @param clockRecord
	 * @return
	 */
	List<ClockRecord> dateRecord(ClockRecord clockRecord);


	
	/**
	 * 至科实验室管理系统的密码登录
	 * @param users
	 * @return
	 */
	Users zkLogin(Users users);
	
	/**
	 * 实验室管理系统的账号绑定
	 * @param users
	 */
	void updateBinding(Users users);
	
	/**
	 * 通过id获取用户详情
	 * @param users
	 * @return
	 */
	Users getDetailUser(Users users);
	/**
	 * 插入使用记录
	 * @param zUsers
	 */
	void insertUseRecord(Users zUsers);
	/**
	 * 获取实验室管理系统的用户详情  根据id
	 * @param senderID
	 * @return
	 */
	String getUserDetil(String senderID);
	
	/**
	 * 人员列表的第一层
	 * @param parentID 
	 * @return
	 */
	List<Users> selectOrganize(String parentID);
	/**
	 * 第二层
	 * @param parentID
	 * @return
	 */
	List<Users> selectOrganizes(String parentID);
	
}
